Introdução


Vamos comparar as séries Game of Thrones e Xena a Princesa Guerreira para responder :

  • Qual das duas é mais bem avaliada pelos usuários?
    • A diferença se mantém ao longo das temporadas?
    • Existe efeito por ser começo/fim ou metade da temporada?

Conjunto de dados utilizado

Análise exploratória de dados do IMDB sobre as séries Game of Thrones e Xena a Princesa Guerreira. Os dados originais e as variáveis vêm deste repositorio . Lá consta a explicação de como os dados foram gerados e do significado de cada variável.

episodes <- read_csv(here("data/series_from_imdb.csv"), 
                    progress = FALSE,
                    col_types = cols(.default = col_double(), 
                                     series_name = col_character(), 
                                     episode = col_character(), 
                                     url = col_character(),
                                     season = col_character())) %>% 
    filter(series_name %in% c("Game of Thrones","Xena a Princesa Guerreira")) 

episodes %>% 
    glimpse()
## Observations: 194
## Variables: 18
## $ series_name <chr> "Xena a Princesa Guerreira", "Xena a Princesa Guer...
## $ episode     <chr> "Sins of the Past", "Chariots of War", "Dreamworke...
## $ series_ep   <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,...
## $ season      <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", ...
## $ season_ep   <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,...
## $ url         <chr> "http://www.imdb.com/title/tt0394990/", "http://ww...
## $ user_rating <dbl> 7.9, 7.4, 7.7, 7.4, 7.5, 7.7, 7.5, 8.0, 7.8, 7.6, ...
## $ user_votes  <dbl> 440, 339, 318, 297, 288, 282, 270, 303, 278, 287, ...
## $ r1          <dbl> 0.003623188, 0.025641026, 0.064516129, 0.023474178...
## $ r2          <dbl> 0.04347826, 0.03846154, 0.03548387, 0.02347418, 0....
## $ r3          <dbl> 0.010869565, 0.038461538, 0.029032258, 0.004694836...
## $ r4          <dbl> 0.007246377, 0.034188034, 0.022580645, 0.023474178...
## $ r5          <dbl> 0.018115942, 0.042735043, 0.019354839, 0.046948357...
## $ r6          <dbl> 0.02536232, 0.12393162, 0.03870968, 0.06103286, 0....
## $ r7          <dbl> 0.08695652, 0.16239316, 0.05161290, 0.11267606, 0....
## $ r8          <dbl> 0.1086957, 0.1666667, 0.1354839, 0.2112676, 0.1804...
## $ r9          <dbl> 0.15579710, 0.09829060, 0.17096774, 0.18309859, 0....
## $ r10         <dbl> 0.5398551, 0.2692308, 0.4322581, 0.3098592, 0.3383...

Episódios da metade da temporada

A título de tornar nossa discussão mais interessante vamos gerar uma nova informação : “Um episódio faz parte da metade da temporada?” (middle_eps). Um episódio é da metade da temporada se está entre os 60% dos episódios centrais de uma temporada.

sumario_simples <- 
    episodes %>% 
    select(season_ep,season,series_name) %>%
    group_by(series_name,season) %>% 
    summarise(n = n(),
               p20 = quantile(seq(from=1, to=n, by=1), 0.20),
               p80 = quantile(seq(from=1, to=n, by=1), 0.80))

episodes <- left_join(episodes, sumario_simples,
                      by = c("series_name", "season")) %>% 
    group_by(series_name, season) %>%
    mutate(middle_eps = (season_ep > p20) &
               (season_ep < p80)) %>% 
    ungroup()
episodes %>% 
    select(series_name, series_ep, middle_eps)

E aí, quem se saiu melhor?


Comparemos então as avaliações dadas aos episódios das duas séries ao longo de suas 6 temporadas:


m <- list(
  b = 100,
  r = 185,
  t = 75
  )

p <- episodes %>% 
      ggplot(aes(x = series_name, y = user_rating, 
                 color=middle_eps,
                 group=episode, text = paste(
                    "Série:", series_name,
                    "\nEpisódio:", episode,
                    "\nAvaliação:", user_rating
                     ))) + 
        geom_jitter(width = 0.3, alpha=0.7) +
        facet_wrap(~ season) +
        xlab("") +
        ylab("Votação do Usuário") +
        theme(axis.text.x = element_text(angle = 90, hjust = 1))  +
        scale_x_discrete(labels=c("GOT", "Xena")) +
        labs(color='Metade da temporada?') +
        ggtitle(paste("GOT x Xena (Temporada a Temporada)")) +
        theme_update(plot.title = element_text(hjust = -1))

ggplotly(p, tooltip = "text") %>%
  layout(autosize = F, margin = m)

É possível perceber que ao longo de todas as seis temporadas (na 5ª e 6ª temporada sendo menos unânime), quer sejam episódios do \(\color{red}{\text{começo/metade da temporada}}\), quer sejam \(\color{blue}{\text{do meio da temporada}}\), Game of Thrones (GOT) tem avaliações mais altas que Xena a Princeisa Guerreira (Xena).